package com.bmob.lover.data.model.bean

import android.os.Parcelable
import com.chad.library.adapter.base.entity.MultiItemEntity
import com.google.gson.Gson
import com.google.gson.annotations.Expose
import com.google.gson.reflect.TypeToken
import kotlinx.android.parcel.IgnoredOnParcel
import kotlinx.parcelize.Parcelize

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 * @author The one
 * @date 2021-04-22 14:00
 * @describe TODO
 * @email 625805189@qq.com
 * @remark
 */
@Parcelize
data class Lover(
    @Expose
    var urls: ArrayList<String>? = null,
    @Expose
    var attachments: String? = null,
    @Expose
    var type: Int = 0,
    @Expose
    var title: String? = "",
    @Expose
    var content: String? = "",
    @Expose
    var address: UserLocation? = null
) : BaseLoverBean(), Parcelable, MultiItemEntity {

    @IgnoredOnParcel
    private var mFiles = mutableListOf<TheFile>()

    fun getFiles(): List<TheFile> {
        if (mFiles.isEmpty()) {
            if (!attachments.isNullOrEmpty()) {
                mFiles = Gson().fromJson(
                    attachments,
                    object : TypeToken<List<TheFile?>?>() {}.type
                )
            } else if (!urls.isNullOrEmpty()) {
                for (url in urls!!) {
                    mFiles.add(TheFile(path = url, mThumbnail = url))
                }
            }
        }
        return mFiles
    }

    fun getThumbnail(): String? {
        return if (getFiles().isEmpty()) null
        else getFiles()[0].getThumbnail()
    }

    fun getUserAddress(): String {
        return address?.district ?: "未知"
    }

    override val itemType: Int
        get() = type

}